// export const num = 1
// export const qwe = 123

// 接口
// export interface UserState {
// 	name: string
// 	age: number
// 	sex: string
// 	like?: string
// 	readonly code: number
// }

// export const user: UserState = {
// 	name: '张三',
// 	age: 18,
// 	sex: '男',
// 	like: '女',
// 	code: 100
// }

// 类
// export class Animal {
// 	// 实例属性
// 	name: string
// 	age: number
// 	// 构造器 类初始化的时候构造器会执行
// 	constructor(name: string, age: number) {
// 		this.name = name
// 		this.age = age
// 	}
// 	// 原型方法
// 	sayName() {
// 		console.log(`你好， 我是${this.name}, 今年${this.age}岁了`)
// 	}
// }


// const dog = new Animal('dog', 5)
// const cat = new Animal('cat', 3)
// console.log(dog, cat);
// dog.sayName()
// cat.sayName()

// 类继承
// 修饰符
// public: 公共属性, 默认就是公共属性
// protected: 保护属性, 只可以在自身和子类中访问
// private: 私有属性, 只可以自身访问
// 父类(基类)
export class Father {
	// 保护
	protected meony: number
	// 私有
	private litterMoney = 100
	constructor(meony: number) {
		this.meony = meony
		console.log(this.meony)
	}
}

// 子类(派生类)
export class Son extends Father {
	public name: string
	private code: number = 110
	constructor(name: string, meony: number) {
		// 必须调用父类的构造器
		// 即 super()
		super(meony)
		this.name = name
		// 保护属性 子类可以访问
		console.log(this.meony)
		// 报错：私有属性 子类不可以访问
		console.log(this.litterMoney)
	}
}

const s1 = new Son('儿子1', 200)

console.log(s1.name)
// 报错：保护属性 只可以自身和子类可以访问
console.log(s1.meony)
// 报错：私有属性 子类不可以访问
console.log(s1.litterMoney)



